/**
 * @file    processor.h
 * @author  Thomas Di'Meco and Matthieu Maugard
 * @brief   Execute instructions
 */

#ifndef PROCESSOR_H_
#define PROCESSOR_H_

/**
 * Execute the next instruction pointed by the PC register
 * @param step_by_step Boolean that indicate if the program
 *                     have to run step by step
 * @param output_file  The output stream for step by step display (to be more generic)
 * @param input_file   The input stream for step by step commands (to be more generic)
 * @return The error code:
 *         - error code = 0 means no error
 *         - error code < 0 means the program has been halted
 *         - error code > 0 means a specific error code
 */
int execute (int step_by_step, FILE * output_file, FILE * input_file);

#endif /* PROCESSOR_H_ */
